//global.gc()  执行垃圾回收  

process.memoryUsage()   //读取内存占用情况,他会打印一个对象，对象里面有一个headUsed
let obj={name:'牛哥',age: new Array(5*1024*1024)}  //2.6M
let ws = new WeakSet() 
ws.add(obj)
obj=null  //来回收我   如果不写这一句，就不知道什么时候回收，




// global.gc()//垃圾回收


console.log(process.memoryUsage())  //4.4M





// 创建一个对象
let user = { name: "Alice" };

// 创建一个WeakSet并添加user对象
let usersSet = new WeakSet();
usersSet.add(user);

// 用户对象还有一个强引用（变量user）
console.log("Before deleting user variable:", usersSet.has(user)); // 输出: true

// 删除对user对象的强引用
user = null;

// 此时，如果垃圾回收机制运行，user对象可能会被回收，
// 因为它仅存在于WeakSet中，没有其他强引用了。
// 但在实际JavaScript运行环境中，无法直接触发垃圾回收来演示这一点。

// 理论上，如果此时垃圾回收已发生，WeakSet中也不会再包含该对象。
// 但请注意，在实际代码中无法直接观察到这个即时效果，因为垃圾回收是自动且不可预测的。








